package com.grain.security.core.authorize;

import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configurers.ExpressionUrlAuthorizationConfigurer;

/*
 * 授权配置提供器，各模块和系统通过实现此接口向系统添加授权配置
 * */
public interface AuthorizeConfigProvider {

    /**
     * @param config
     * @return 返回的boolean值表示配置中有没有关于anyRequest的配置，整个授权配置中，应该有且仅有一个针对anyRequest的配置，
     * 如果所有的实现都没有关于anyRequest的配置，则系统会自动增加一个anyRequest().authenticated()的配置，
     * 如果有多个针对anyRequest的配置，则会抛出异常
     */
    boolean config(ExpressionUrlAuthorizationConfigurer<HttpSecurity>.ExpressionInterceptUrlRegistry config);
}
